www.gusucode.com > VC++ Firewall防火墙源代码 > VC++ Firewall防火墙源代码/Firewall防火墙/Page4.cpp

    //Download by http://www.NewXing.com
// Page4.cpp : implementation file
//

#include "stdafx.h"
#include "FireWall1.h"
#include "Page4.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
extern int global_set;
FILE *pfoutService=NULL;
FILE *pwriteService=NULL;
ServiceManageData MyServiceManageData;
CString m_str_key;
BOOL nook4;
/////////////////////////////////////////////////////////////////////////////
// CPage4 property page

IMPLEMENT_DYNCREATE(CPage4, CPropertyPage)

CPage4::CPage4() : CPropertyPage(CPage4::IDD)
{
	//{{AFX_DATA_INIT(CPage4)
	m_str_key="";
	m_check_activex = FALSE;
	m_check_ftp = FALSE;
	m_check_http = FALSE;
	m_check_ispro = FALSE;
	m_check_isurl = FALSE;
	m_check_java = FALSE;
	m_check_other = FALSE;
	m_check_script = FALSE;
	m_check_smtp = FALSE;
	m_check_tcp = FALSE;
	m_check_telnet = FALSE;
	m_check_udp = FALSE;
	m_edit_nofilterurl = _T("");
	m_edit_otherkey = _T("");
	m_edit_url = _T("");
	nook4=1;
	//}}AFX_DATA_INIT
}

CPage4::~CPage4()
{
	if(nook4)
	{
/*		GetNameFromFile();
		memset(MyServiceManageData.FilterKeyWord,0,200);
		strcpy(MyServiceManageData.FilterKeyWord,m_edit_otherkey);
*/
	}
}

void CPage4::DoDataExchange(CDataExchange* pDX)
{
	CPropertyPage::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CPage4)
	DDX_Control(pDX, IDC_EDIT_URL, m_edit_urlct);
	DDX_Control(pDX, IDC_EDIT_OTHERKEY, m_edit_otherkeyct);
	DDX_Control(pDX, IDC_EDIT_NOFILTERURL, m_edit_nofilterurlct);
	DDX_Check(pDX, IDC_CHECK_ACTIVEX, m_check_activex);
	DDX_Check(pDX, IDC_CHECK_FTP, m_check_ftp);
	DDX_Check(pDX, IDC_CHECK_HTTP, m_check_http);
	DDX_Check(pDX, IDC_CHECK_ISPRO, m_check_ispro);
	DDX_Check(pDX, IDC_CHECK_ISURL, m_check_isurl);
	DDX_Check(pDX, IDC_CHECK_JAVA, m_check_java);
	DDX_Check(pDX, IDC_CHECK_OTHER, m_check_other);
	DDX_Check(pDX, IDC_CHECK_SCRIPT, m_check_script);
	DDX_Check(pDX, IDC_CHECK_SMTP, m_check_smtp);
	DDX_Check(pDX, IDC_CHECK_TCP, m_check_tcp);
	DDX_Check(pDX, IDC_CHECK_TELNET, m_check_telnet);
	DDX_Check(pDX, IDC_CHECK_UDP, m_check_udp);
	DDX_Text(pDX, IDC_EDIT_NOFILTERURL, m_edit_nofilterurl);
	DDX_Text(pDX, IDC_EDIT_OTHERKEY, m_edit_otherkey);
	DDX_Text(pDX, IDC_EDIT_URL, m_edit_url);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CPage4, CPropertyPage)
	//{{AFX_MSG_MAP(CPage4)
	ON_BN_CLICKED(IDC_BUTTON_OK, OnButtonOk)
	ON_BN_CLICKED(IDC_CHECK_ACTIVEX, OnCheckActivex)
	ON_BN_CLICKED(IDC_CHECK_HTTP, OnCheckHttp)
	ON_BN_CLICKED(IDC_CHECK_ISPRO, OnCheckIspro)
	ON_BN_CLICKED(IDC_CHECK_ISURL, OnCheckIsurl)
	ON_BN_CLICKED(IDC_CHECK_JAVA, OnCheckJava)
	ON_BN_CLICKED(IDC_CHECK_OTHER, OnCheckOther)
	ON_BN_CLICKED(IDC_CHECK_SCRIPT, OnCheckScript)
	ON_BN_CLICKED(IDC_CHECK_TCP, OnCheckTcp)
	ON_BN_CLICKED(IDC_CHECK_SMTP, OnCheckSmtp)
	ON_BN_CLICKED(IDC_CHECK_TELNET, OnCheckTelnet)
	ON_BN_CLICKED(IDC_CHECK_UDP, OnCheckUdp)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CPage4 message handlers

void CPage4::OnButtonOk() 
{
	nook4=0;
	UpdateData(1);
	if((m_edit_nofilterurl.GetLength()>2)&&(m_edit_url.GetLength()>2)&&m_check_isurl)
	{
		if(GetBestData())
		{
			AfxMessageBox("URL 有冲突,请重新配置!");
			return;
		}
	}


	m_str_key="";
	if(m_check_java)m_str_key+="applet\r\n";
	if(m_check_activex)m_str_key+="object\r\n";
	if(m_check_script)m_str_key+="script\r\n";
	

	global_set|=0x4;
	
	//下面上尚有BUG,对EDIT框的回车没有很好自动修正
	char tempbuf[200];
	memset(tempbuf,0,10);
	int len;
	len=m_edit_otherkey.GetLength();
	if(len>2)
	{

		strcpy(tempbuf,_T(m_edit_otherkey));

		if(tempbuf[len-1]!='\n')
		{
			m_edit_otherkey+="\r\n";
		}
		
	}
	else m_edit_otherkey="";
	UpdateData(TRUE);
	if(m_check_other)m_str_key+=m_edit_otherkey;
	memset(tempbuf,0,200);
	len=m_edit_url.GetLength();
	if(len>0)
	{

		strcpy(tempbuf,_T(m_edit_url));

		if(tempbuf[len-1]!='\n')
		{
			m_edit_url+="\r\n";
		}
	}
	memset(tempbuf,0,200);
	len=m_edit_nofilterurl.GetLength();
	if(len>0)
	{

		strcpy(tempbuf,_T(m_edit_nofilterurl));

		if(tempbuf[len-1]!='\n')
		{
			m_edit_nofilterurl+="\r\n";
		}
	}
/*	GetDlgItem(IDC_EDIT_URL)->UpdateData(TRUE);
	GetDlgItem(IDC_EDIT_NOFILTERURL)->UpdateData(TRUE);
	*/
	
	strcpy(MyServiceManageData.FilterKeyWord,m_str_key);
	strcpy(MyServiceManageData.BlockURLList,m_edit_url);
	strcpy(MyServiceManageData.NoFilterURLList,m_edit_nofilterurl);
	pwriteService=fopen("service.txt","w");
	if(pwriteService)
	{
		fprintf(pwriteService,_T("[FilterAndBlock]\n"));
		fprintf(pwriteService,"%d\n",MyServiceManageData.FilterAndBlock);
		fprintf(pwriteService,"\n");
		fprintf(pwriteService,_T("[Port]\n"));
		fprintf(pwriteService,"%d\n",MyServiceManageData.Port);
		fprintf(pwriteService,"\n");
		fprintf(pwriteService,_T("[TranProtocal]\n"));
		fprintf(pwriteService,"%d\n",MyServiceManageData.TranProtocal);
		fprintf(pwriteService,"\n");
		fprintf(pwriteService,_T("[FilterKeyWords]\n"));
	//	fprintf(pwriteService,"%s\n",MyServiceManageData.FilterKeyWord);
		fprintf(pwriteService,"%s\n",_T(m_str_key));
	//	fprintf(pwriteService,"\r\n");
		fprintf(pwriteService,_T("[TCPFilterBit]\n"));
		fprintf(pwriteService,"%d\n",MyServiceManageData.TCPFilterBit);
		fprintf(pwriteService,"\n");
		fprintf(pwriteService,_T("[BlockUrl]\n"));
		fprintf(pwriteService,"%s\n",_T(m_edit_url));
	//	fprintf(pwriteService,"\r\n");
		fprintf(pwriteService,_T("[NoFilterURL]\r\n"));
		fprintf(pwriteService,"%s\n",_T(m_edit_nofilterurl));
	//	fprintf(pwriteService,"\r\n");
		fprintf(pwriteService,_T("[jl]\n"));
		if(pwriteService!=NULL)
			fclose(pwriteService);	
	}
}

void CPage4::OnCheckActivex() 
{
	if(m_check_activex)
	{
		m_check_activex=FALSE;
		MyServiceManageData.TCPFilterBit&=0xFFFFFFfb;
	}
	else
	{
		m_check_activex=TRUE;
		MyServiceManageData.TCPFilterBit|=0x04;
	}		
}

void CPage4::OnCheckHttp() 
{
	if(m_check_http)
	{
		m_check_http=FALSE;
		MyServiceManageData.Port&=0xFFFFFFfe;
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
		
	}
	else
	{
		m_check_http=TRUE;
		MyServiceManageData.Port|=0x01;
		if(m_check_other)
		{
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_SHOWNORMAL);
			::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_SHOWNORMAL);
		}
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_SHOWNORMAL);
	}
			
}

void CPage4::OnCheckIspro() 
{
	if(m_check_ispro==TRUE)
	{
		m_check_ispro=FALSE;
		MyServiceManageData.FilterAndBlock&=0xFFFFFFFE;
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TCP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_UDP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
	}
	else
	{
		m_check_ispro=TRUE;
		MyServiceManageData.FilterAndBlock|=0x01;
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TCP),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_UDP),SW_SHOWNORMAL);
		if(m_check_tcp)
		{
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_SHOWNORMAL);
			if(m_check_http)
			{
				::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_SHOWNORMAL);
				::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_SHOWNORMAL);
				::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_SHOWNORMAL);
				::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_SHOWNORMAL);
				::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_SHOWNORMAL);
				::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_SHOWNORMAL);
				::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_SHOWNORMAL);
				if(m_check_other)
				{
					::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_SHOWNORMAL);
					::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_SHOWNORMAL);
				}
			}
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_SHOWNORMAL);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_SHOWNORMAL);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_SHOWNORMAL);
		}
	}

	
}

void CPage4::OnCheckIsurl() 
{
	// TODO: Add your control notification handler code here
	if(m_check_isurl)
	{
		m_check_isurl=FALSE;
		MyServiceManageData.FilterAndBlock&=0xFFFFFFFD;
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_URL),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_URL),SW_HIDE);
	}
	else
	{
		m_check_isurl=TRUE;
		MyServiceManageData.FilterAndBlock|=0x2;
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_URL),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_URL),SW_SHOWNORMAL);
	}	
}

void CPage4::OnCheckJava() 
{
	if(m_check_java)
	{
		m_check_java=FALSE;
		MyServiceManageData.TCPFilterBit&=0xFFFFFFfe;
	}
	else
	{
		m_check_java=TRUE;
		MyServiceManageData.TCPFilterBit|=0x01;
	}	
}

void CPage4::OnCheckOther() 
{
	// TODO: Add your control notification handler code here
	if(m_check_other)
	{
		m_check_other=FALSE;
		MyServiceManageData.TCPFilterBit&=0xFFFFFFF7;
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
	}
	else
	{
		m_check_other=TRUE;
		MyServiceManageData.TCPFilterBit|=0x08;
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_SHOWNORMAL);
	}	
}

void CPage4::OnCheckScript() 
{
	if(m_check_script)
	{
		m_check_script=FALSE;
		MyServiceManageData.TCPFilterBit&=0xFFFFFFfd;
	}
	else
	{
		m_check_script=TRUE;
		MyServiceManageData.TCPFilterBit|=0x02;
	}		
}

void CPage4::OnCheckTcp() 
{
	// TODO: Add your control notification handler code here
	if(m_check_tcp)
	{
		m_check_tcp=FALSE;
		MyServiceManageData.TranProtocal&=0xFFFFFFfe;
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
		::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
		
	}
	else
	{
		m_check_tcp=TRUE;
		MyServiceManageData.TranProtocal|=0x01;
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_SHOWNORMAL);
		::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_SHOWNORMAL);
		if(m_check_http)
		{
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_SHOWNORMAL);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_SHOWNORMAL);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_SHOWNORMAL);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_SHOWNORMAL);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_SHOWNORMAL);
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_SHOWNORMAL);
			::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_SHOWNORMAL);
			if(m_check_other)
			{
				::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_SHOWNORMAL);
				::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_SHOWNORMAL);
			}
		}
	}
	
}
WORD CPage4::GetDataFromFile()
{
	int totlen=0;
	int len;
	char command[40];
	char *pbuf;
	pfoutService=fopen("service.txt","r");
	if(pfoutService==NULL)return 0;
	while(feof(pfoutService)==0)
	{
		ReadCommand(pfoutService,command);
		switch(GetCommand(command))
		{
		case FILTERANDBLOCK:
			ReadCommand(pfoutService,command);
			sscanf(command,"%d",&MyServiceManageData.FilterAndBlock);
			if(MyServiceManageData.FilterAndBlock&0x01)
				m_check_ispro=TRUE;
			else m_check_ispro=FALSE;
			if(MyServiceManageData.FilterAndBlock&0x02)
				m_check_isurl=TRUE;
			else m_check_isurl=FALSE;
			break;
		case TRANPROTOCAL:
			ReadCommand(pfoutService,command);
			sscanf(command,"%d",&MyServiceManageData.TranProtocal);
			if(MyServiceManageData.TranProtocal&0x1)
			{
				MyServiceManageData.TranProtocal|=0x01;
				m_check_tcp=TRUE;
			}
			else m_check_tcp=FALSE;
			break;
		case PORT:
			ReadCommand(pfoutService,command);
			sscanf(command,"%d",&MyServiceManageData.Port);
			if(MyServiceManageData.Port&0x1)
			{
				MyServiceManageData.Port|=0x1;
				m_check_http=TRUE;
			}
			else
			{
				MyServiceManageData.Port&=0xfe;
				m_check_http=FALSE;
			}
			break;
		case FILTERKEYWORDS:
			ReadCommand(pfoutService,command);
			while(GetCommand(command)!=INITIAL_END_SEGMENT) {
					m_edit_otherkey+=command;
					m_edit_otherkey+="\r\n";
					ReadCommand(pfoutService,command);
			}
	/*		m_edit_otherkey.TrimRight("\r\n");
			
			len=m_edit_otherkey.Find("\r");
			while(len!=-1)
			{
				totlen=m_edit_otherkey.GetLength();
				m_edit_otherkey=m_edit_otherkey.Right(totlen-len-2);
				len=m_edit_otherkey.Find("\r");
			}
			m_edit_otherkey+="\r\n";
			*/
			len=m_edit_otherkey.Find("applet\r\n");
			if(len!=-1)
			{
				totlen=m_edit_otherkey.GetLength();
				m_edit_otherkey=m_edit_otherkey.Right(totlen-6);
			}
			len=m_edit_otherkey.Find("object\r\n");
			if(len!=-1)
			{
				totlen=m_edit_otherkey.GetLength();
				m_edit_otherkey=m_edit_otherkey.Right(totlen-9);
			}
			len=m_edit_otherkey.Find("script\r\n");
			if(len!=-1)
			{
				totlen=m_edit_otherkey.GetLength();
				m_edit_otherkey=m_edit_otherkey.Right(totlen-8);
			}
			break;
		case TCPFILTERBIT:
			ReadCommand(pfoutService,command);
			sscanf(command,"%d",&MyServiceManageData.TCPFilterBit);
			if(MyServiceManageData.TCPFilterBit&0x01)
				m_check_java=1;
			else m_check_java=0;
			if(MyServiceManageData.TCPFilterBit&0x02)
				m_check_script=1;
			else m_check_script=0;
			if(MyServiceManageData.TCPFilterBit&0x04)
				m_check_activex=1;
			else m_check_activex=0;
			if(MyServiceManageData.TCPFilterBit&0x08)
				m_check_other=1;
			else m_check_other=0;
			break;
		case BLOCKURL:
			ReadCommand(pfoutService,command);
			while(GetCommand(command)!=INITIAL_END_SEGMENT) {
					m_edit_url+=command;
					m_edit_url+="\r\n";
					ReadCommand(pfoutService,command);
			}
			break;
		case NOFILTERURL:
			ReadCommand(pfoutService,command);
			while(GetCommand(command)!=INITIAL_END_SEGMENT) {
					m_edit_nofilterurl+=command;
					m_edit_nofilterurl+="\r\n";
					ReadCommand(pfoutService,command);
			}
			break;	
		}
	}
	if(pfoutService)fclose(pfoutService);
	return 1;

}
void CPage4::ReadCommand(FILE *pf, char *pbuf)
{
	while(feof(pf)==0) {
		*pbuf=fgetc(pf);
		if(*pbuf=='\n') break;
		pbuf++;
	}
	*pbuf--=0;
	if(*pbuf=='\r')*pbuf=0;
}

WORD CPage4::GetCommand(char *pbuf)
{
	char buf[50];
	
	if(*pbuf==0) return INITIAL_END_SEGMENT;
	sscanf(pbuf,"%s",buf);
	if(strstr(buf,"[NoFilterURL]")!=NULL) return NOFILTERURL;
	else if(strstr(buf,"[FilterAndBlock]")!=NULL) return FILTERANDBLOCK;
	else if(strstr(buf,"[TranProtocal]")!=NULL)return TRANPROTOCAL;
	else if(strstr(buf,"[Port]")!=NULL) return PORT;
	else if(strstr(buf,"[FilterKeyWords]")!=NULL) return FILTERKEYWORDS;
	else if(strstr(buf,"[TCPFilterBit]")!=NULL) return TCPFILTERBIT;
	else if(strstr(buf,"[BlockUrl]")!=NULL)return BLOCKURL;
	else if(buf[0]=='#') return COMMENT;
	else if(strstr(buf,"[jl]")!=NULL) return INITIAL_END_SEGMENT;
	else return COMMAND_UNKNOWN;
}

void CPage4::OnCheckSmtp() 
{
	// TODO: Add your control notification handler code here
	
}

void CPage4::OnCheckTelnet() 
{
	// TODO: Add your control notification handler code here
	
}

void CPage4::OnCheckUdp() 
{
	// TODO: Add your control notification handler code here
	
}
void CPage4::ShowInitWindow()
{
//	if(pfoutService)
	{
		if(!m_check_ispro)
		{
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TCP),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_UDP),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
		}
		if(!m_check_isurl)
		{
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_URL),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_EDIT_URL),SW_HIDE);
		}
		if(!m_check_tcp)
		{
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_HTTP),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_FTP),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SMTP),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_TELNET),SW_HIDE);
		}
		if(!m_check_http)
		{
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_JAVA),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_HTTP),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_SCRIPT),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_ACTIVEX),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_FILTERURL),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_EDIT_NOFILTERURL),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_CHECK_OTHER),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
		}
		if(!m_check_other)
		{
			::ShowWindow(::GetDlgItem(*this,IDC_STATIC_OTHERKEY),SW_HIDE);
			::ShowWindow(::GetDlgItem(*this,IDC_EDIT_OTHERKEY),SW_HIDE);
		}
	}
}

BOOL CPage4::OnInitDialog() 
{
	CPropertyPage::OnInitDialog();
	
	// TODO: Add extra initialization here
	GetData();
	UpdateData(FALSE);
	ShowInitWindow();
		
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

BOOL CPage4::OnSetActive() 
{
	// TODO: Add your specialized code here and/or call the base class
	GetData();
	if(MyServiceManageData.TCPFilterBit&0x1)
		m_check_java=1;
	else m_check_java=0;
	if(MyServiceManageData.TCPFilterBit&0x2)
		m_check_script=1;
	else m_check_script=0;
	if(MyServiceManageData.TCPFilterBit&0x4)
		m_check_activex=1;
	else m_check_activex=0;
	UpdateData(0);
	return CPropertyPage::OnSetActive();
}

void CPage4::GetNameFromFile()
{
	int totlen=0;
	int len;
	char command[40];
	char *pbuf;
	pfoutService=fopen("service.txt","r");
	if(pfoutService==NULL)return;
	while(feof(pfoutService)==0)
	{
		ReadCommand(pfoutService,command);
		switch(GetCommand(command))
		{
		case FILTERANDBLOCK:
			ReadCommand(pfoutService,command);
			sscanf(command,"%d",&MyServiceManageData.FilterAndBlock);
			if(MyServiceManageData.FilterAndBlock&0x01)
				m_check_ispro=TRUE;
			else m_check_ispro=FALSE;
			if(MyServiceManageData.FilterAndBlock&0x02)
				m_check_isurl=TRUE;
			else m_check_isurl=FALSE;
			break;
		case TRANPROTOCAL:
			ReadCommand(pfoutService,command);
			sscanf(command,"%d",&MyServiceManageData.TranProtocal);
			if(MyServiceManageData.TranProtocal&0x1)
			{
				MyServiceManageData.TranProtocal|=0x01;
				m_check_tcp=TRUE;
			}
			else m_check_tcp=FALSE;
			break;
		case PORT:
			ReadCommand(pfoutService,command);
			sscanf(command,"%d",&MyServiceManageData.Port);
			if(MyServiceManageData.Port&0x1)
			{
				MyServiceManageData.Port|=0x1;
				m_check_http=TRUE;
			}
			else
			{
				MyServiceManageData.Port&=0xfe;
				m_check_http=FALSE;
			}
			break;
		case FILTERKEYWORDS:
			ReadCommand(pfoutService,command);
			while(GetCommand(command)!=INITIAL_END_SEGMENT) {
					m_edit_otherkey+=command;
					m_edit_otherkey+="\r\n";
			//		MessageBox(m_edit_otherkey);
					ReadCommand(pfoutService,command);
			}
	/*		m_edit_otherkey.TrimRight("\r\n");
			
			len=m_edit_otherkey.Find("\r");
			while(len!=-1)
			{
				totlen=m_edit_otherkey.GetLength();
				m_edit_otherkey=m_edit_otherkey.Right(totlen-len-2);
				len=m_edit_otherkey.Find("\r");
			}
			m_edit_otherkey+="\r\n";
			*/
			len=m_edit_otherkey.Find("applet\r\n");
			if(len!=-1)
			{
				totlen=m_edit_otherkey.GetLength();
				m_edit_otherkey=m_edit_otherkey.Right(totlen-6);
			}
			len=m_edit_otherkey.Find("object\r\n");
			if(len!=-1)
			{
				totlen=m_edit_otherkey.GetLength();
				m_edit_otherkey=m_edit_otherkey.Right(totlen-9);
			}
			len=m_edit_otherkey.Find("script\r\n");
			if(len!=-1)
			{
				totlen=m_edit_otherkey.GetLength();
				m_edit_otherkey=m_edit_otherkey.Right(totlen-8);
			}
			break;
		case TCPFILTERBIT:
			ReadCommand(pfoutService,command);
			sscanf(command,"%d",&MyServiceManageData.TCPFilterBit);
			if(MyServiceManageData.TCPFilterBit&0x01)
				m_check_java=1;
			else m_check_java=0;
			if(MyServiceManageData.TCPFilterBit&0x02)
				m_check_script=1;
			else m_check_script=0;
			if(MyServiceManageData.TCPFilterBit&0x04)
				m_check_activex=1;
			else m_check_activex=0;
			if(MyServiceManageData.TCPFilterBit&0x08)
				m_check_other=1;
			else m_check_other=0;
			break;
		case BLOCKURL:
			ReadCommand(pfoutService,command);
			while(GetCommand(command)!=INITIAL_END_SEGMENT) {
					m_edit_url+=command;
					m_edit_url+="\r\n";
					ReadCommand(pfoutService,command);
			}
			break;
		case NOFILTERURL:
			ReadCommand(pfoutService,command);
			while(GetCommand(command)!=INITIAL_END_SEGMENT) {
					m_edit_nofilterurl+=command;
					m_edit_nofilterurl+="\r\n";
					ReadCommand(pfoutService,command);
			}
			break;	
		}
	}
	if(pfoutService)fclose(pfoutService);
	return ;
}

int CPage4::GetBestData()
{
	char *nofilter;
	char tmpurl[50];
	
	nofilter=m_edit_url.GetBuffer(m_edit_url.GetLength());

	int ff=0;
	CString str="";
	CString strbest=m_edit_nofilterurl;
	int ffff=strbest.Find("\r\n");
	while(ffff>0)
	{
		memset(tmpurl,0,50);
		str=strbest.Left(ffff+2);
		strbest=strbest.Right(strbest.GetLength()-ffff-2);
		strcpy(tmpurl,str.GetBuffer(ffff+2));
		if(strstr(nofilter,tmpurl))ff++;
		ffff=strbest.Find("\r\n");
	//	if(strbest
	}
	if(ff){
		memset(tmpurl,0,50);
		sprintf(tmpurl,"阻断URL和不进行协议内容过滤URL有%d处冲突,请重新配置",ff);
		
	}
	return ff;
//	m_edit_nofilterurl
//	m_edit_url
}

void CPage4::GetData()
{
	int totlen;
	if(MyServiceManageData.FilterAndBlock&0x01)
		m_check_ispro=TRUE;
	else m_check_ispro=FALSE;
	if(MyServiceManageData.FilterAndBlock&0x02)
		m_check_isurl=TRUE;
	else m_check_isurl=FALSE;
	if(MyServiceManageData.TranProtocal&0x1)
	{
//		MyServiceManageData.TranProtocal|=0x01;
		m_check_tcp=TRUE;
	}
	else m_check_tcp=FALSE;
	if(MyServiceManageData.Port&0x1)
	{
//		MyServiceManageData.Port|=0x1;
		m_check_http=TRUE;
	}
	else
	{
//		MyServiceManageData.Port&=0xfe;
		m_check_http=FALSE;
	}
	m_edit_otherkey=MyServiceManageData.FilterKeyWord;
	int len=m_edit_otherkey.Find("applet\r\n");
	if(len!=-1)
	{
		totlen=m_edit_otherkey.GetLength();
		m_edit_otherkey=m_edit_otherkey.Right(totlen-6);
	}
	len=m_edit_otherkey.Find("object\r\n");
	if(len!=-1)
	{
		totlen=m_edit_otherkey.GetLength();
		m_edit_otherkey=m_edit_otherkey.Right(totlen-9);
	}
	len=m_edit_otherkey.Find("script\r\n");
	if(len!=-1)
	{
		totlen=m_edit_otherkey.GetLength();
		m_edit_otherkey=m_edit_otherkey.Right(totlen-8);
	}
	if(m_edit_otherkey.GetLength()<2)m_edit_otherkey="";
	//////////////////
	if(MyServiceManageData.TCPFilterBit&0x01)
		m_check_java=1;
	else m_check_java=0;
	if(MyServiceManageData.TCPFilterBit&0x02)
		m_check_script=1;
	else m_check_script=0;
	if(MyServiceManageData.TCPFilterBit&0x04)
		m_check_activex=1;
	else m_check_activex=0;
	if(MyServiceManageData.TCPFilterBit&0x08)
		m_check_other=1;
	else m_check_other=0;
	////////////////
	m_edit_url=MyServiceManageData.BlockURLList;
	///////////////////
	m_edit_nofilterurl=MyServiceManageData.NoFilterURLList;
	////////////////////////
}